﻿
CREATE DATABASE QUANLYNHANSU
go
USE QUANLYNHANSU
GO

--create table
CREATE TABLE NHANVIEN 
(
	MaNhanVien varchar (10) NOT NULL ,
	TenNhanVien nvarchar (50) NOT NULL,
	DiaChi nvarchar (50)  NOT NULL ,
	DienThoai nvarchar (12) ,
    NgaySinh smalldatetime NOT NULL,
	Email varchar (20) NOT NULL,
	Phai nvarchar (3) NOT NULL,
	PassWord varchar (20) NOT NULL,
	TaiKhoanNganHang varchar (20),
	MaViTri int , 
	MaTrangThai smallint not null,
	MaPhongBan int NOT NULL,
	PRIMARY KEY (MaNhanVien)	
) 
GO


CREATE TABLE THANNHAN
(
	MaThanNhan  smallint identity(1,1) ,
	TenThanNhan nvarchar (30) NOT NULL,
	NgaySinh smalldatetime NOT NULL,
	Phai nvarchar (3) NOT NULL,
	MaNhanVien varchar (10) NOT NULL ,
	PRIMARY KEY (MaThanNhan)
)
GO

CREATE TABLE NGAYPHEP 
(
	MaNgayPhep smallint identity (1,1),
	MaNhanVien varchar (10) NOT NULL ,
	PRIMARY KEY (MaNgayPhep)
) 
GO

CREATE TABLE TRANGTHAI (
	MaTrangThai smallint identity(1,1) ,
	TenTrangThai nvarchar (10) NOT NULL ,
	PRIMARY KEY (MaTrangThai)
) 
GO

CREATE TABLE KIEULAMVIEC
(
	MaKieuLamViec int identity(1,1),
	TenKieuLamViec nvarchar(100) not null,
	PRIMARY KEY (MaKieuLamViec)	
)
go
CREATE TABLE CHITIETNGAYPHEP
(
	MaChiTietNgayPhep int identity (1,1),
	MaNgayPhep smallint not null,
	NgayBatDauNghi datetime not null,
	NgayKetThucNghi datetime not null,
	PRIMARY KEY (MaChiTietNgayPhep)
)
GO
CREATE TABLE PHONGBAN
(
	MaPhongBan int identity (1,1),
	TenPhongBan nvarchar(50) not null,
	Levels int,
	PRIMARY KEY (MaPhongBan)
)
GO
CREATE TABLE PHONGBAN_VITRI
(
	MaPhongBan int not null ,
	MaViTri int not null,
	PRIMARY KEY (MaPhongBan,MaViTri)
)
GO
CREATE TABLE HOPDONG
(
	MaHopDong int identity(1,1),
	MaNhanVien varchar (10) not null, 
	NgayKyHopDong datetime not null ,
	NgayHetHan datetime not null,
	LuongCanBan money not null,
	MaKieuLamViec int not null,
	PRIMARY KEY (MaHopDong)
)
GO
CREATE TABLE VITRI
(
	MaViTri int identity (1,1),
	TenViTri nvarchar (50) not null,
	PRIMARY KEY (MaViTri)
)
go

CREATE TABLE CHITIETBANGLUONG
(
	MaChiTietBangLuong int identity(1,1),
	MaBangLuong int not null,
	LuongCanBan money not null,
	TienBaoHiem money,
	TienNghiViec money,
	TienPhuCap money,
	TienThueThuNhapCaNhan money,
	PRIMARY KEY (MaChiTietBangLuong)
)
go
CREATE TABLE LOAIBAOHIEM
(
	MaLoaiBaoHiem int identity(1,1),
	TenLoaiBaoHiem nvarchar(50) not null,
	PRIMARY KEY (MaLoaiBaoHiem)
)
go
CREATE TABLE CHITIETLOAIBAOHIEM
(
	MaChiTietLoaiBaoHiem int identity(1,1),
	MaLoaiBaoHiem int not null,
	MaNhanVien varchar(10) not null,
	TiLeDong int,
	NgayThamGia smalldatetime,
	PRIMARY KEY(MaChiTietLoaiBaoHiem)
)
go
CREATE TABLE BANGLUONG
(
	MaBangLuong int identity(1,1),
	MaNhanVien varchar(10) not null,
	Thang int not null,
	Nam int not null,
	SoTien money not null,
	PRIMARY KEY(MaBangLuong)
)
go
CREATE TABLE PHUCAP
(
	MaPhuCap int identity(1,1),
	TenPhuCap nvarchar(50) not null,
	MaNhanVien varchar(10) not null,
	SoTienPhuCap money not null,
	NgayPhuCap smalldatetime not null,
	PRIMARY KEY(MaPhuCap)
)
go
CREATE TABLE NGAYLE
(
	MaNgayLe int identity(1,1),
	NgayLe smalldatetime not null,
	PRIMARY KEY(MaNgayLe)
)
go
CREATE TABLE NGUOIDUNG
(
	MaNguoiDung int identity(1,1),
	TenDangNhap varchar(10) not null,
	MatKhau varchar(10) not null,
	Quyen varchar(10) not null,
	PRIMARY key(MaNguoiDung)
)
go


------------------------------------------------------------
ALTER TABLE HOPDONG
ADD CONSTRAINT FK_HopDong_KieuLamViec Foreign key(MaKieuLamViec) references KIEULAMVIEC(MaKieuLamViec),
	CONSTRAINT FK_HopDong_NhanVien Foreign key(MaNhanVien) references NHANVIEN(MaNhanVien)
GO

ALTER TABLE CHITIETNGAYPHEP
ADD CONSTRAINT FK_ChiTietNgayPhep_NgayPhep Foreign key(MaNgayPhep) references NGAYPHEP(MaNgayPhep)
GO

ALTER TABLE NGAYPHEP
ADD CONSTRAINT FK_NgayPhep_NhanVien Foreign key(MaNhanVien) references NHANVIEN(MaNhanVien)
GO

ALTER TABLE PHONGBAN_VITRI
ADD CONSTRAINT FK_PhongBan_ViTri Foreign key(MaPhongBan) references PHONGBAN(MaPhongBan),
	CONSTRAINT FK_PhongBan_ViTri1 Foreign key(MaViTri) references VITRI(MaViTri)
GO

ALTER TABLE NHANVIEN
ADD CONSTRAINT FK_NhanVien_TrangThai Foreign key(MaTrangThai) references TRANGTHAI(MaTrangThai),
	CONSTRAINT FK_NhanVien_ViTri Foreign key(MaViTri) references VITRI(MaViTri),
	CONSTRAINT FK_NhanVien_PhongBan Foreign key(MaPhongBan) references PHONGBAN(MaPhongBan)
GO

--table CHITIETLOAIBAOHIEM:
ALTER TABLE CHITIETLOAIBAOHIEM
	ADD CONSTRAINT FK_CHITIETLOAIBAOHIEM_LOAIBAOHIEM FOREIGN KEY(MaLoaiBaoHiem) references LOAIBAOHIEM(MaLoaiBaoHiem),
		CONSTRAINT FK_CHITIETLOAIBAOHIEM_NHANVIEN FOREIGN KEY(MaNhanVien) references NHANVIEN(MaNhanVien)
	GO

--table CHITIETBANGLUONG
ALTER TABLE CHITIETBANGLUONG
	ADD CONSTRAINT FK_CHITIETBANGLUONG_BANGLUONG FOREIGN KEY(MaBangLuong) references BANGLUONG(MaBangLuong)
	GO

--table BANGLUONG 
ALTER TABLE BANGLUONG
	ADD CONSTRAINT FK_BANGLUONG_NHANVIEN FOREIGN KEY(MaNhanVien) references NHANVIEN(MaNhanVien)
	GO

--table THANNHAN
ALTER TABLE THANNHAN
	ADD CONSTRAINT FK_THANNHAN_NHANVIEN FOREIGN KEY(MaNhanVien) references NHANVIEN(MaNhanVien)
	GO

--table PHUCAP
ALTER TABLE PHUCAP
	ADD CONSTRAINT FK_PHUCAP_NHANVIEN FOREIGN KEY(MaNhanVien) references NHANVIEN(MaNhanVien)
	GO



-----------------------------------------------------------------------------------------------------------------
--///////////////////////////////////////////////////////////////////////////////////////////////////////////--
--//////////////////////////////sp1: Lấy danh sách phụ cấp của Nhân viên/////////////////////////////////////--
--///////////////////////////////////////////////////////////////////////////////////////////////////////////--
create  proc sp_LayPhuCapMotNhanVien
@MaNhanVien varchar(10)
as
	Begin 
		select TenPhuCap,NgayPhuCap,SoTienPhuCap,MaPhuCap from PHUCAP where MaNhanVien = @MaNhanVien
	End
GO

--///////////////////////////////////////////////////////////////////////////////////////////////////////////--
--//////////////////////////////sp2: Thêm phụ cấp cho Nhân viên/////////////////////////////////////--
--///////////////////////////////////////////////////////////////////////////////////////////////////////////--
create proc sp_ThemPhuCap
@MaNhanVien varchar(10),@TenPhuCap nvarchar(50),@SoTienPhuCap money,@NgayPhuCap smalldatetime
as
	if(@TenPhuCap='')
	Begin
		raiserror(N'Chưa nhập tên phụ cấp',16,1)
		return
	End
	if(@SoTienPhuCap='')
	Begin
		raiserror(N'Chưa nhập số tiền phụ cấp',16,1)
		return
	End
	insert into PHUCAP values(@TenPhuCap,@MaNhanVien,@SoTienPhuCap,@NgayPhuCap)
GO

--///////////////////////////////////////////////////////////////////////////////////////////////////////////--
--//////////////////////////////sp3: Xoá phụ cấp cho Nhân viên/////////////////////////////////////--
--///////////////////////////////////////////////////////////////////////////////////////////////////////////--
create proc sp_XoaPhuCap
@MaPhuCap int
as
	delete from PHUCAP where MaPhuCap = @MaPhuCap
GO

--///////////////////////////////////////////////////////////////////////////////////////////////////////////--
--//////////////////////////////sp4: Cập nhật phụ cấp cho Nhân viên/////////////////////////////////////--
--///////////////////////////////////////////////////////////////////////////////////////////////////////////--
create proc sp_CapNhatPhuCap
@MaPhuCap int,@MaNhanVien varchar(10),@TenPhuCap nvarchar(50),@SoTienPhuCap money,@NgayPhuCap smalldatetime
as
	Update PHUCAP set TenPhuCap = @TenPhuCap, SoTienPhuCap=@SoTienPhuCap,NgayPhuCap = @NgayPhuCap
	where MaPhuCap = @MaPhuCap and MaNhanVien=@MaNhanVien
GO



--ĐĂNG NHẬP--
CREATE proc sp_DangNhap
@Ten varchar(10),@MatKhau varchar(10)
as
	if  not exists (Select * from NGUOIDUNG where TenDangNhap=@Ten and MatKhau=@MatKhau)
	begin
		raiserror (N'Tên đăng nhập hoặc mật khẩu không đúng',16,1)
		return
	end
	select Quyen from NGUOIDUNG where TenDangNhap=@Ten and MatKhau=@MatKhau

GO
--Load cbViTri--
create proc sp_ViTri
as
	select * from VITRI
GO
--Load cbTrangThai
create proc sp_TrangThai
as
	select * from TRANGTHAI
GO
--Load cbPhongBan
create proc sp_PhongBan
as
	select * from PHONGBAN
GO
--Load danh sach nhan vien
create  proc sp_DanhSachNhanVien
as
	select MaNhanVien,TenNhanVien,DiaChi,DienThoai,NgaySinh,Email,Phai,PassWord,TenViTri,TenTrangThai,TenPhongBan,TaiKhoanNganHang
	from NHANVIEN nv,PHONGBAN p, TRANGTHAI t,VITRI vt
	where   nv.MaPhongBan=p.MaPhongBan and nv.MaViTri=vt.MaViTri 
		and nv.MaTrangThai=t.MaTrangThai 
go

--Them NhanVien
create  proc sp_ThemNhanVien
@tennv nvarchar(50),
@diachi nvarchar(50),
@dienthoai nvarchar(12),
@ngaysinh smalldatetime,
@email nvarchar(20),
@phai nvarchar(3),
@pass nvarchar(20),
@taikhoan nvarchar(20),
@mavitri int,
@trangthai smallint,
@phong int
as 
	declare @ma varchar(10), @i int
	set @i = 1
	set @ma = 'B5-001'
	while  exists (select * from NHANVIEN where MaNhanVien = @ma)
	Begin
		if(@i >= 99)
		Begin
			set @i = @i + 1
			set @ma = 'B5-'+convert(varchar(10),@i)
		End	
		else if(@i >= 9 and @i < 99 )
		Begin
			set @i = @i + 1
			set @ma = 'B5-0'+convert(varchar(10),@i)
		End
		else if(@i < 9)
		Begin
			set @i = @i + 1
			set @ma = 'B5-00'+convert(varchar(10),@i)
		End
	End
	if exists (select * from NHANVIEN 
					where TenNhanVien=@tennv and DienThoai=@dienthoai and NgaySinh=@ngaysinh and TaiKhoanNganHang=@taikhoan)
		raiserror (N'Nhân viên này đã tồn tại trong CSDL',16,1 )
	else
		if(@tennv=''or @ngaysinh=''or @dienthoai=''or @email=''or @phai='')
			raiserror (N'chưa nhập đủ thông tin nhân viên',16,1 )
		else
		insert into NHANVIEN values(@ma,@tennv,@diachi,@dienthoai,@ngaysinh,@email,@phai,@pass,@taikhoan,@mavitri,@trangthai,@phong)
		
go
--select * from nhanvien
--Cập nhật nhân viên

create proc sp_CapNhatNhanVien
@manv varchar(10),
@tennv nvarchar(50),
@diachi nvarchar(50),
@dienthoai nvarchar(12),
@ngaysinh smalldatetime,
@email nvarchar(20),
@phai nvarchar(3),
@pass nvarchar(20),
@taikhoan nvarchar(20),
@mavitri int,
@trangthai smallint,
@phong int
as
	if exists (select * from NHANVIEN 
					where TenNhanVien=@tennv and DienThoai=@dienthoai and NgaySinh=@ngaysinh and TaiKhoanNganHang=@taikhoan)
		raiserror (N'trùng với thông tin nhân viên khác, hãy kiểm tra lại!',16,1 )
	else
		if(@tennv=''or @ngaysinh=''or @dienthoai=''or @email=''or @phai='')
			raiserror (N'chưa cập nhật đủ thông tin nhân viên',16,1 )
		else 
			update NHANVIEN 
			set TenNhanVien=@tennv,DiaChi=@diachi,DienThoai=@dienthoai, NgaySinh=@ngaysinh,Email=@email,Phai=@phai,PassWord=@pass,TaiKhoanNganHang=@taikhoan,MaViTri=@mavitri,MaPhongBan=@phong,MaTrangThai=@trangthai
			where MaNhanVien=@manv	
go

--thêm thân nhân
create proc sp_ThemThanNhan
@manv varchar(10),
@tentn nvarchar(30),
@ngaysinh smalldatetime,
@phai nvarchar(3)
as
	if exists (select * from THANNHAN
					where TenThanNhan=@tentn and NgaySinh=@ngaysinh and Phai=@phai)
		raiserror (N'trùng với thông tin thân nhân khác,hãy kiểm tra lại!',16,1 )
	else
		if(@tentn=''or @ngaysinh=''or @phai='')
			raiserror (N'chưa nhập đủ thông tin thân nhân của nhân viên',16,1 )
		else 
			insert into THANNHAN values(@tentn,@ngaysinh,@phai,@manv)
go
--Cap nhat than nhan
create proc sp_CapNhatThanNhan
@manv varchar(10),
@matn int,
@tentn nvarchar(30),
@ngaysinh smalldatetime,
@phai nvarchar(3)
as
	if exists (select * from THANNHAN
					where TenThanNhan=@tentn and NgaySinh=@ngaysinh and Phai=@phai)
		raiserror (N'trùng với thông tin thân nhân khác,hãy kiểm tra lại!',16,1 )
	else
		if(@tentn=''or @ngaysinh=''or @phai='')
			raiserror (N'chưa cập nhật đủ thông tin thân nhân của nhân viên',16,1 )
		else 
			update THANNHAN 
			set TenThanNhan=@tentn, NgaySinh=@ngaysinh, Phai=@phai
			where MaNhanVien=@manv and MaThanNhan=@matn
go
--Xoa than nhan cua nv
create proc sp_XoaThanNhan
@matn int
as
	delete from THANNHAN where MaThanNhan=@matn
go
--xem danh sach than nhan cua 1 nhan vien
create  proc sp_DanhSachThanNhan
@manv varchar(10)
as
	select tn.MaThanNhan, tn.TenThanNhan, tn.Phai,tn.NgaySinh,nv.TenNhanVien
	from NHANVIEN nv join THANNHAN tn on nv.MaNhanVien=tn.MaNhanVien
	where tn.MaNhanVien=@manv
GO


--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--////////Thêm Loại Bảo Hiểm Mới
Create proc  sp_ThemLoaiBaoHiem
	@TenLoaiBaoHiem nvarchar(50)
as
	if(@TenLoaiBaoHiem='')
	Begin
		raiserror(N'Chưa nhập Tên Loại Bảo Hiểm!', 16,1)
		return
	End
	if exists(select * From LoaiBaoHiem Where TenLoaiBaoHiem=@TenLoaiBaoHiem)
	Begin
		raiserror(N'Loại bảo hiểm này đã tồn tại!', 16, 1)
		return
	End	
	else
	Begin
		insert into LOAIBAOHIEM
		values(@TenLoaiBaoHiem)
	End
	

--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--Xóa Loại Bảo Hiểm

Create Proc sp_XoaLoaiBaoHiem
	@MaLoaiBaoHiem int
as
	if exists(Select * from CHITIETLOAIBAOHIEM Where MaLoaiBaoHiem=@MaLoaiBaoHiem)
	Begin
		raiserror(N'Không thể xóa Loại Bảo Hiểm này!', 16, 1)
		return
	End
	else
	Begin
		Delete LoaiBaoHiem
		Where MaLoaiBaoHiem=@MaLoaiBaoHiem
	End


--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--Cập Nhật Loại Bảo Hiểm

Create Proc sp_CapNhatLoaiBaoHiem
	@MaLoaiBaoHiem int,
	@TenLoaiBaoHiem nvarchar(50)
as
	if(@TenLoaiBaoHiem='')
	Begin
		raiserror(N'Chưa nhập Tên Loại Bảo Hiểm!', 16, 1)
		return
	End
	else
	Begin
		Update LoaiBaoHiem
		set TenLoaiBaoHiem=@TenLoaiBaoHiem
		Where MaLoaiBaoHiem=@MaLoaiBaoHiem
	End


--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--Lấy thông tin một loại bảo hiểm

create Proc sp_Lay1LoaiBaoHiem
	@MaLoaiBaoHiem int
as
	Select * 
	from LOAIBAOHIEM 
	Where MaLoaiBaoHiem=@MaLoaiBaoHiem


--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--Lấy thông tin tất cả các loại bảo hiểm
create Proc sp_LayLoaiBaoHiem	
as
	Select * 
	from LOAIBAOHIEM 	

--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--Thêm mới 1 Chi Tiết Loại Bảo Hiểm
Create Proc sp_ThemChiTietLoaiBaoHiem
	@MaLoaiBaoHiem int,
	@MaNhanVien varchar(10),
	@TiLeDong int,
	@NgayThamGia smalldatetime
as
	if(@MaLoaiBaoHiem='' or @MaNhanVien='')
	Begin
		raiserror(N'Chưa nhập đủ thông tin!', 16, 1)
		return
	End
	if exists(Select * From CHITIETLOAIBAOHIEM
			Where MaLoaiBaoHiem=@MaLoaiBaoHiem and MaNhanVien=@MaNhanVien and TiLeDong=@TiLeDong and NgayThamGia=@NgayThamGia)
	Begin
		raiserror(N'Chi Tiết Loại Bảo Hiểm đã tồn tại!', 16, 1)
		return
	end
	else
	Begin
		insert into CHITIETLOAIBAOHIEM
		values(@MaLoaiBaoHiem, @MaNhanVien, @TiLeDong, @NgayThamGia)
	End

--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--Xóa một Chi Tiết Loại Bảo Hiểm
	
Create Proc sp_XoaChiTietLoaiBaoHiem
	@MaLoaiBaoHiem int,
	@MaNhanVien	int
as
	if exists(Select * from CHITIETLOAIBAOHIEM where MaLoaiBaoHiem=@MaLoaiBaoHiem and MaNhanVien=@MaNhanVien)
	Begin
		Delete ChiTietLoaiBaoHiem
		Where MaLoaiBaoHiem=@MaLoaiBaoHiem and MaNhanVien=@MaNhanVien
	End
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--Tính bảo hiểm thôi việc cho 1 nhân viên
Create proc sp_TinhBaoHiemThoiViec
	@MaLoaiBaoHiem int,
	@NgayThamGia smalldatetime,
	@NgayThoiViec smalldatetime,
	@MaNhanVien varchar(10)
as
	declare @TienBaoHiem money
	set @TienBaoHiem=0
	select @TienBaoHiem=Convert(money,(month(@NgayThoiViec)-month(@NgayThamGia))*TiLeDong*1.0/100)
	From CHITIETLOAOBAOHIEM
	Where MaNhanVien=@MaNhanVien and MaLoaiBaoHiem=@MaLoaiBaoHiem
	return @TienBaoHiem


--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--Tính bảo hiểm từng tháng cho nhân viên: tính tiền bảo hiểm của một loại bảo hiểm
Create Proc sp_TinhBaoHiemThang
	@MaLoaiBaoHiem int,
	@MaNhanVien varchar(50),
	@NgayTinhBaoHiem Smalldatetime
as
	if convert(int, @NgayTinhBaoHiem-(Select NgayThamGia From CHITIETBAOHIEM Where MaLoaiBaoHiem=@MaLoaiBaoHiem and MaNhanVien=@MaNhanVien))<1
	Begin
		raiserror(N'Nhân viên chưa tham gia bảo hiểm này!', 16, 1)
		Return
	End
	declare @TienBaoHiem money
	set @TienBaoHiem=0
	Select @TienBaoHiem=Convert(money,CT.LuongCanBan*BH.TiLeDong/100)
	From CHITIETBANGLUONG CT, BANGLUONG BL, NHANVIEN NV, CHITIETBAOHIEM BH
	Where CT.MaBangLuong=BL.MaBangLuong and BL.MaNhanVien=NV.MaNhanVien
			and NV.MaNhanVien=BH.MaNhanVien and BH.MaLoaiBaoHiem=@MaLoaiBaoHiem
			and NV.MaNhanVien=@MaNhanVien
	return @TienBaoHiem


--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--